<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Get vk mus</title>
<script type="text/javascript">
var Base64 = {
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

	// public method for encoding
	encode : function (input) {
	    var output = "";
	    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
	    var i = 0;

	    input = Base64._utf8_encode(input);

	    while (i < input.length) {

	        chr1 = input.charCodeAt(i++);
	        chr2 = input.charCodeAt(i++);
	        chr3 = input.charCodeAt(i++);

	        enc1 = chr1 >> 2;
	        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
	        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
	        enc4 = chr3 & 63;

	        if (isNaN(chr2)) {
	            enc3 = enc4 = 64;
	        } else if (isNaN(chr3)) {
	            enc4 = 64;
	        }

	        output = output +
	        Base64._keyStr.charAt(enc1) + Base64._keyStr.charAt(enc2) +
	        Base64._keyStr.charAt(enc3) + Base64._keyStr.charAt(enc4);

	    }

	    return output;
	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
	    string = string.replace(/\r\n/g,"\n");
	    var utftext = "";

	    for (var n = 0; n < string.length; n++) {

	        var c = string.charCodeAt(n);

	        if (c < 128) {
	            utftext += String.fromCharCode(c);
	        }
	        else if((c > 127) && (c < 2048)) {
	            utftext += String.fromCharCode((c >> 6) | 192);
	            utftext += String.fromCharCode((c & 63) | 128);
	        }
	        else {
	            utftext += String.fromCharCode((c >> 12) | 224);
	            utftext += String.fromCharCode(((c >> 6) & 63) | 128);
	            utftext += String.fromCharCode((c & 63) | 128);
	        }

	    }

	    return utftext;
	},
};


	safari.application.addEventListener("command", function(event){
		if(event.command === 'vkmus')
		{
			safari.application.activeBrowserWindow.activeTab.page.dispatchMessage("find vkmus", null);
		}
	}, false);

	safari.application.addEventListener("message", function(event){
		if(event.name === 'no inputs')
		{
			console.log('vkmus nop');
		}
		else if(event.name === 'found mp3s')
		{
			console.log('mp3s: ',event.message);

			// create .m3u list
			var songs = event.message;
			var m3u = "#EXTM3U\n\n";
			if(songs.length > 0)
			{
				for(var i=0; i<songs.length; i++)
				{
					var song = songs[i];
					m3u += "#EXTINF:"+song.duration+", "+song.artist+" - "+song.title+"\n"+
							song.path+"\n\n";
				}
			}

			var file = 'data:audio/x-mpegurl;base64,'+Base64.encode(m3u);
			safari.application.activeBrowserWindow.activeTab.page.dispatchMessage("new location", file);
		}
		else
		{
			console.warning('vkmus unknown message',event);
		}
	});
</script>
</head>
<body>
test text
</body>
</html>
